package com.example.springboot.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Random;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName("orders")
public class Orders implements Serializable {
    private static final long serialVersionUID = 1L;

    /** ID */
    @TableId(type = IdType.AUTO)
    private Integer id;
    /** 订单编号 */
    private String orderNo;
    /** 商品名称 */
    private String goodsName;
    /** 商品数量 */
    private Integer num;
    /** 总价格 */
    private BigDecimal total;
    /** 创建时间 */
    private String createTime;
    /** 支付编号 */
    private String payNo;
    /** 支付时间 */
    private String payTime;
    /** 订单状态 */
    private String status;
    /** 设备名称 */
    private String equName;
    /** 使用水量 */
    private BigDecimal useCount;
    /** 用户名  */
    private Integer useId;

    private static long getCurrentTimestamp() {
        return System.currentTimeMillis();
    }

    private static final Random random = new Random();

    public void setPayNo() {
        // 使用当前时间戳的后6位（或更多位）作为基础
        long timestampPart = getCurrentTimestamp() % 1000000; // 取后6位
        // 结合一个随机数来降低重复的概率
        int randomPart = random.nextInt(900000); // 保证随机数部分是6位数（0-899999）

        int uniqueNumber = (int) (timestampPart + randomPart);

        // 确保是6位数（虽然由于组合方式，实际上不太可能超出6位，但这里为了保险起见）
        String formattedNumber = String.format("%06d", uniqueNumber);

        this.payNo = formattedNumber;

    }
}
